//package jp.sourceforge.talisman.mds;
//
///*
// * $Id: MdsMethodTest.java,v 1.1 2009/09/12 05:06:20 weiwei Exp $
// */
//
//import java.util.Iterator;
//
//import junit.runner.*;
//
///**
// * 
// * @author Haruaki Tamada
// * @version $Revision: 1.1 $ 
// */
//public class MdsMethodTest{
//    private Table<String> table;
//    private MdsMethod<String> mds;
//
//    private static final double HYOGO_X = 35.073617d;
//    private static final double HYOGO_Y = -71.860761d;
//    private static final double WAKAYAMA_X = -85.916950d;
//    private static final double WAKAYAMA_Y = -16.798861d;
//    private static final double SHIGA_X = 33.797354d;
//    private static final double SHIGA_Y = 65.012338d;
//    private static final double KYOTO_X = 58.626458d;
//    private static final double KYOTO_Y = -6.731186d;
//    private static final double NARA_X = -32.0976517d;
//    private static final double NARA_Y = 19.3428728d;
//    private static final double OSAKA_X = -9.482827d;
//    private static final double OSAKA_Y = 11.035597d;
//    
//    public void setUp(){
//        table = new Table<String>();
//        table.addValue("京都", "兵庫",   60);
//        table.addValue("京都", "和歌山", 142);
//        table.addValue("京都", "大阪",   83);
//        table.addValue("京都", "奈良",   95);
//        table.addValue("京都", "滋賀",   61);
//
//        table.addValue("滋賀", "兵庫",   136);
//        table.addValue("滋賀", "和歌山", 144);
//        table.addValue("滋賀", "大阪",   32);
//        table.addValue("滋賀", "奈良",   79);
//
//        table.addValue("奈良", "兵庫",   116);
//        table.addValue("奈良", "和歌山",  68);
//        table.addValue("奈良", "大阪",   75);
//
//        table.addValue("大阪", "兵庫",   85);
//        table.addValue("大阪", "和歌山",  68);
//
//        table.addValue("兵庫", "和歌山",  132);
//
//        mds = new MdsMethod<String>(table);
//    }
//
//    @Test(expected=IllegalStateException.class)
//    public void testNullSheet(){
//        mds = new MdsMethod<String>();
//        mds.calculate();
//    }
//
//    @Test(expected=IllegalStateException.class)
//    public void testIllegalState(){
//        table.removeValue("京都", "兵庫");
//
//        mds.calculate();
//    }
//
//    @Test
//    public void testLimit(){
//        Assert.assertFalse(mds.isLimitted());
//
//        mds.setLimit(2);
//        Assert.assertTrue(mds.isLimitted());
//        Assert.assertEquals(2, mds.getLimit());
//
//        Item[] items = mds.getItems();
//        Assert.assertTrue(items[0].isLimitted());
//        Assert.assertEquals(2, items[0].getDimension());
//        Assert.assertEquals(6, items[0].getNonLimittedDimension());
//
//        mds.removeLimit();
//        Assert.assertFalse(mds.isLimitted());
//        Assert.assertFalse(items[0].isLimitted());
//        Assert.assertEquals(6, items[0].getDimension());
//    }
//
//    @Test(expected=IllegalStateException.class)
//    public void testNotSetLimit(){
//        Assert.assertFalse(mds.isLimitted());
//        mds.getLimit();
//    }
//
//    @Test(expected=IllegalArgumentException.class)
//    public void testSetLimitAsNegativeValue(){
//        Assert.assertFalse(mds.isLimitted());
//        mds.setLimit(-10);
//    }
//
//    @Test(expected=IllegalArgumentException.class)
//    public void testSetLimitAsZeroValue(){
//        Assert.assertFalse(mds.isLimitted());
//        mds.setLimit(0);
//    }
//
//    @Test
//    public void testDefaultConstructor(){
//        MdsMethod<String> mds = new MdsMethod<String>();
//        Assert.assertNull(mds.getTable());
//
//        mds.setTable(table);
//        Assert.assertNotNull(mds.getTable());
//
//        Item[] c = mds.getItems();
//        for(int i = 0; i < c.length; i++){
//            if(c[i].getName().equals("兵庫")){
//                Assert.assertEquals(HYOGO_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(HYOGO_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("和歌山")){
//                Assert.assertEquals(WAKAYAMA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(WAKAYAMA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("滋賀")){
//                Assert.assertEquals(SHIGA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(SHIGA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("京都")){
//                Assert.assertEquals(KYOTO_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(KYOTO_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("奈良")){
//                Assert.assertEquals(NARA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(NARA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("大阪")){
//                Assert.assertEquals(OSAKA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(OSAKA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//        }
//    }
//
//    @Test
//    public void testSelfConstructor(){
//        Item[] c = new MdsMethod<String>(mds).getItems();
//        for(int i = 0; i < c.length; i++){
//            if(c[i].getName().equals("兵庫")){
//                Assert.assertEquals(HYOGO_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(HYOGO_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("和歌山")){
//                Assert.assertEquals(WAKAYAMA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(WAKAYAMA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("滋賀")){
//                Assert.assertEquals(SHIGA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(SHIGA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("京都")){
//                Assert.assertEquals(KYOTO_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(KYOTO_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("奈良")){
//                Assert.assertEquals(NARA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(NARA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("大阪")){
//                Assert.assertEquals(OSAKA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(OSAKA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//        }
//    }
//
//    @Test
//    public void testCoordinateArray(){
//        Item[] c = mds.getItems();
//        for(int i = 0; i < c.length; i++){
//            if(c[i].getName().equals("兵庫")){
//                Assert.assertEquals(HYOGO_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(HYOGO_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("和歌山")){
//                Assert.assertEquals(WAKAYAMA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(WAKAYAMA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("滋賀")){
//                Assert.assertEquals(SHIGA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(SHIGA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("京都")){
//                Assert.assertEquals(KYOTO_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(KYOTO_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("奈良")){
//                Assert.assertEquals(NARA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(NARA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//            else if(c[i].getName().equals("大阪")){
//                Assert.assertEquals(OSAKA_X, c[i].get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(OSAKA_Y, c[i].get(1).doubleValue(), 1E-6);
//            }
//        }
//    }
//
//    @Test
//    public void testCoordinateIterator(){
//        for(Item c: mds){
//            if(c.getName().equals("兵庫")){
//                Assert.assertEquals(HYOGO_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(HYOGO_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("和歌山")){
//                Assert.assertEquals(WAKAYAMA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(WAKAYAMA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("滋賀")){
//                Assert.assertEquals(SHIGA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(SHIGA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("京都")){
//                Assert.assertEquals(KYOTO_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(KYOTO_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("奈良")){
//                Assert.assertEquals(NARA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(NARA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("大阪")){
//                Assert.assertEquals(OSAKA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(OSAKA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//        }
//    }
//
//    @Test
//    public void testCoordinateIteratorNames(){
//        for(Iterator<String> i = mds.names(); i.hasNext(); ){
//            String name = i.next();
//            Item c = mds.getItem(name);
//            if(c.getName().equals("兵庫")){
//                Assert.assertEquals(HYOGO_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(HYOGO_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("和歌山")){
//                Assert.assertEquals(WAKAYAMA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(WAKAYAMA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("滋賀")){
//            	Assert.assertEquals(SHIGA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(SHIGA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("京都")){
//                Assert.assertEquals(KYOTO_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(KYOTO_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("奈良")){
//                Assert.assertEquals(NARA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(NARA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//            else if(c.getName().equals("大阪")){
//                Assert.assertEquals(OSAKA_X, c.get(0).doubleValue(), 1E-6);
//                Assert.assertEquals(OSAKA_Y, c.get(1).doubleValue(), 1E-6);
//            }
//        }
//    }
//
//    @Test
//    public void testCoordinateCount(){
//        Assert.assertEquals(6, mds.getItemCount());
//    }
//
//    @Test
//    public void testRank(){
//        Assert.assertEquals(6, mds.getRank());
//    }
//
//    @Test
//    public void testCoordinate(){
//        Item kyoto    = mds.getItem("京都");
//        Item shiga    = mds.getItem("滋賀");
//        Item nara     = mds.getItem("奈良");
//        Item osaka    = mds.getItem("大阪");
//        Item wakayama = mds.getItem("和歌山");
//        Item hyogo    = mds.getItem("兵庫");
//
//        Assert.assertEquals("兵庫", hyogo.getName());
//        Assert.assertEquals(HYOGO_X, hyogo.get(0).doubleValue(), 1E-6);
//        Assert.assertEquals(HYOGO_Y, hyogo.get(1).doubleValue(), 1E-6);
//
//        Assert.assertEquals("和歌山", wakayama.getName());
//        Assert.assertEquals(WAKAYAMA_X, wakayama.get(0).doubleValue(), 1E-6);
//        Assert.assertEquals(WAKAYAMA_Y, wakayama.get(1).doubleValue(), 1E-6);
//
//        Assert.assertEquals("滋賀", shiga.getName());
//        Assert.assertEquals(SHIGA_X, shiga.get(0).doubleValue(), 1E-6);
//        Assert.assertEquals(SHIGA_Y, shiga.get(1).doubleValue(), 1E-6);
//
//        Assert.assertEquals("京都", kyoto.getName());
//        Assert.assertEquals(KYOTO_X, kyoto.get(0).doubleValue(), 1E-6);
//        Assert.assertEquals(KYOTO_Y, kyoto.get(1).doubleValue(), 1E-6);
//
//        Assert.assertEquals("奈良", nara.getName());
//        Assert.assertEquals(NARA_X, nara.get(0).doubleValue(), 1E-6);
//        Assert.assertEquals(NARA_Y, nara.get(1).doubleValue(), 1E-6);
//
//        Assert.assertEquals("大阪", osaka.getName());
//        Assert.assertEquals(OSAKA_X, osaka.get(0).doubleValue(), 1E-6);
//        Assert.assertEquals(OSAKA_Y, osaka.get(1).doubleValue(), 1E-6);
//    }
//}
